﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Linq;

namespace UI_PMQLThuPhi_LMD
{
    public partial class FrmCapNhatBienDong : DevExpress.XtraEditors.XtraForm
    {
        DataClasses1DataContext dc = new DataClasses1DataContext(SystemInfo.pub_ConnString);
        Boolean saved = true;
        Boolean them = false;
        Boolean ok = false;
        DataTable dt;
        DialogResult result;
        //Doanh_Bo_Thang doanhbo;
        public FrmCapNhatBienDong()
        {
            InitializeComponent();
        }

        private void labelControl1_Click(object sender, EventArgs e)
        {

        }

        private void textEdit1_EditValueChanged(object sender, EventArgs e)
        {

        }

        private void textEdit2_EditValueChanged(object sender, EventArgs e)
        {

        }

        private void checkEdit1_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void frmCapNhatBienDong_Load(object sender, EventArgs e)
        {
            DataTable dtthang = new DataTable();
            dtthang.Columns.Add("Tháng");
            for (int i = 1; i <= 12; i++)
            {
                DataRow dr = dtthang.NewRow();
                dr[0] = i;
                dtthang.Rows.Add(dr);
            }
            lkThang.Properties.DataSource = dtthang;
            lkThang.Properties.DisplayMember = "Tháng";
            lkThang.Properties.ValueMember = "Tháng";
            lkThang.EditValue = "1";
            int curyear = DateTime.Today.Year;
            //for()
            var temp = (from dbc in dc.Doanh_Bo_Checks select new { dbc.Nam }).Distinct();
            lkNam.Properties.DataSource = temp;
            lkNam.Properties.DisplayMember = "Nam";
            lkNam.Properties.ValueMember = "Nam";
            lkNam.EditValue = curyear;
        }

        //private void txtMKH_KeyPress(object sender, KeyPressEventArgs e)
        //{
        //    if (e.KeyChar ==(char) Keys.Enter)
        //    {
        //        //MessageBox.Show("enter");
        //        var khachhang = from kh in dc.Khach_Hangs where kh.KH_MaKH == txtMKH.Text select kh;
        //        if (khachhang.Count() == 0)
        //        {
        //            XtraMessageBox.Show("Mã số khách hàng không tồn tại", "Cảnh Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        //        }
        //        else
        //        {
        //            //doanhbo = from db in dc.Doanh_Bo_Thangs where (db.Khach_Hang.KH_MaKH == txtMKH.Text) & (db.DB_Thang.ToString() == lkThang.EditValue) & (db.DB_Nam.ToString() == lkNam.EditValue) select db;
        //            try
        //            {
        //                doanhbo = dc.Doanh_Bo_Thangs.Single(db => (db.Khach_Hang.KH_MaKH == txtMKH.Text) & (db.DB_Thang.ToString() == lkThang.EditValue) & (db.DB_Nam.ToString() == lkNam.EditValue));
        //                cThuDuoc.Focus();
        //                txtTenKH.Text = khachhang.First().KH_Ten;
        //                txtDiaChi.Text = khachhang.First().KH_SoNha + "-" + khachhang.First().Duong.D_Ten + "-" + khachhang.First().Khu_Vuc.KV_Ten + "-" + khachhang.First().Khu_Vuc.Phuong_Xa.PX_Ten;
        //                txtPhi.Text = khachhang.First().Loai_Khach_Hang.L_MucPhi.ToString();
        //                txtSoTien.Text = doanhbo.DB_PhiDaThu.ToString();
        //                //txtSoTien.DataBindings.Add("Text", doanhbo.First(), "DB_PhiDaThu");
        //                ok = true;

        //                if (doanhbo.Trang_Thai_Thu.TTT_Ten == "Thu được")
        //                {
        //                    cThuDuoc.Checked = true;
        //                }
        //                else
        //                {
        //                    cThuDuoc.Checked = false;
        //                }
        //            }
        //            catch
        //            {
        //                XtraMessageBox.Show("Không tồn tại doanh bộ vào tháng " + lkThang.EditValue.ToString() + ", năm " + lkNam.EditValue.ToString() + " cho khách hàng này", "Cảnh Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        //            }
                                            
                    
        //        }
        //    }
        //}

        //private void cThuDuoc_KeyPress(object sender, KeyPressEventArgs e)
        //{
        //    if (e.KeyChar == (char)Keys.Enter)
        //    {
        //        txtSoTien.Focus();
        //    }
        //}

        private void btLuu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (gvDoanhBo.RowCount == 0)
            {
                XtraMessageBox.Show("Không có dữ liệu để xóa.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                result = XtraMessageBox.Show("Bạn có chắc muốn xóa?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
                if (result == DialogResult.Yes)
                {
                    int rowHandles = gvDoanhBo.FocusedRowHandle;
                    string mkh = gvDoanhBo.GetRowCellValue(rowHandles, gridColumn1).ToString();
                    int thang, nam;
                    if (lkThang.EditValue != null)
                    {
                        thang = Convert.ToInt16(lkThang.EditValue);
                    }
                    else
                    {
                        thang = 0;
                    }
                    if (lkNam.EditValue != null)
                    {
                        nam = Convert.ToInt16(lkNam.EditValue);
                    }
                    else
                    {
                        nam = 0;
                    }
                    //reset lai default khi xoa mot dong
                    Doanh_Bo_Thang doanhbothang = dc.Doanh_Bo_Thangs.Single(db => (db.Khach_Hang.KH_MaKH == mkh) & (db.DB_Thang == Convert.ToInt16(lkThang.EditValue)) & (db.DB_Nam == Convert.ToInt16(lkNam.EditValue)));
                    Trang_Thai_Thu TrangThai = dc.Trang_Thai_Thus.Single(tt => tt.TTT_Ten == "Thu được");
                    doanhbothang.Trang_Thai_Thu=TrangThai;
                    doanhbothang.DB_Update = false;
                    doanhbothang.DB_PhiDaThu = doanhbothang.DB_PhiPhaiThu;
                    dc.SubmitChanges();
                    var doanhbo = from db in dc.Doanh_Bo_Thangs where (db.DB_Thang == thang) & (db.DB_Nam == nam) & (db.DB_Update == true) select new { db.Khach_Hang.KH_MaKH, db.Khach_Hang.KH_Ten, diachi = db.Khach_Hang.KH_SoNha + ", " + db.Khach_Hang.Duong.D_Ten, db.Khach_Hang.Khu_Vuc.Phuong_Xa.PX_Ten, db.DB_PhiPhaiThu, db.Trang_Thai_Thu.TTT_Ten, db.DB_PhiDaThu, db.DB_Update };
                    gcDoanhBo.DataSource = doanhbo;
                }
            }
            

            //if (ok == true)
            //{
            //    //doanhbo = from db in dc.Doanh_Bo_Thangs where (db.Khach_Hang.KH_MaKH == txtMKH.Text) & (db.DB_Thang.ToString() == lkThang.EditValue) & (db.DB_Nam.ToString() == lkNam.EditValue) select db;
            //    doanhbo.DB_PhiDaThu = Convert.ToDecimal(txtSoTien.Text);
            //    if (cThuDuoc.Checked == true)
            //    {
            //        //Trang_Thai_Hoat_Dong TrangThai = from tt in dc.Trang_Thai_Hoat_Dongs where tt.TTHD_TenTT == "Không thu được" select tt;
            //        Trang_Thai_Thu TrangThai = dc.Trang_Thai_Thus.Single(tt => tt.TTT_Ten == "Thu được");
            //        doanhbo.Trang_Thai_Thu=TrangThai;
            //    }
            //    else
            //    {
            //        Trang_Thai_Thu TrangThai = dc.Trang_Thai_Thus.Single(tt => tt.TTT_Ten == "Không thu được");
            //        doanhbo.Trang_Thai_Thu = TrangThai;
                    
            //    }
            //    dc.SubmitChanges();
                //txtMKH.Text = "";
                //txtTenKH.Text = "";
                //txtDiaChi.Text = "";
                //txtPhi.Text = "";
                //txtSoTien.Text = "";
                //cThuDuoc.Checked = false;
                //txtMKH.Focus();

            //    ok = false;
            //}
            //else
            //{
            //    XtraMessageBox.Show("Thông tin không tồn tại để lưu", "Cảnh Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            //}
        }

        //private void txtSoTien_KeyPress(object sender, KeyPressEventArgs e)
        //{
        //    if (e.KeyChar == (char)Keys.Enter)
        //    {
        //        btLuu_ItemClick(btLuu, null);
        //    }
        //}

        private void txtSoTien_EditValueChanged(object sender, EventArgs e)
        {
            
        }

        private void gvDoanhBo_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
        {

        }

        private void lkThang_EditValueChanged(object sender, EventArgs e)
        {
            int thang,nam;
            if (lkThang.EditValue != null)
            {
                thang = Convert.ToInt16( lkThang.EditValue);
            }
            else
            {
                thang = 0;
            }
            if (lkNam.EditValue != null)
            {
                nam = Convert.ToInt16(lkNam.EditValue);
            }
            else
            {
                nam = 0;
            }

            var doanhbo = from db in dc.Doanh_Bo_Thangs where (db.DB_Thang == thang) & (db.DB_Nam == nam)&(db.DB_Update==true) select new { db.Khach_Hang.KH_MaKH, db.Khach_Hang.KH_Ten,diachi=db.Khach_Hang.KH_SoNha+", "+db.Khach_Hang.Duong.D_Ten,db.Khach_Hang.Khu_Vuc.Phuong_Xa.PX_Ten,db.DB_PhiPhaiThu,db.Trang_Thai_Thu.TTT_Ten,db.DB_PhiDaThu,db.DB_Update};
            
            gcDoanhBo.DataSource = doanhbo;
        }

        private void txtMaKH_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Enter)
            {
                //MessageBox.Show("enter");
                var khachhang = from kh in dc.Khach_Hangs where kh.KH_MaKH == txtMaKH.Text select kh;
                if (khachhang.Count() == 0)
                {
                    XtraMessageBox.Show("Mã số khách hàng không tồn tại", "Cảnh Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    try
                    {
                        Doanh_Bo_Thang  doanhbo = dc.Doanh_Bo_Thangs.Single(db => 
                            (db.Khach_Hang.KH_MaKH == txtMaKH.Text) & 
                            (db.DB_Thang.ToString() == lkThang.EditValue) & 
                            (db.DB_Nam.ToString() == lkNam.EditValue));
                        cThuDuoc.Focus();
                        txtTenKH.Text = khachhang.First().KH_Ten;
                        //txtDiaChi.Text = khachhang.First().KH_SoNha + "-" + khachhang.First().Duong.D_Ten + "-" + khachhang.First().Khu_Vuc.KV_Ten + "-" + khachhang.First().Khu_Vuc.Phuong_Xa.PX_Ten;
                        //txtPhi.Text = khachhang.First().Loai_Khach_Hang.L_MucPhi.ToString();
                        txtSoTien.Text = doanhbo.DB_PhiDaThu.ToString();
                        //txtSoTien.DataBindings.Add("Text", doanhbo.First(), "DB_PhiDaThu");
                        ok = true;
                        if (doanhbo.Trang_Thai_Thu.TTT_Ten == "Thu được")
                        {
                            cThuDuoc.Checked = true;
                        }
                        else
                        {
                            cThuDuoc.Checked = false;
                        }
                    }
                    catch
                    {
                        XtraMessageBox.Show("Không tồn tại doanh bộ vào tháng " + lkThang.EditValue.ToString() + ", năm " + lkNam.EditValue.ToString() + " cho khách hàng này", "Cảnh Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }


                }
            }
        }

        private void cThuDuoc_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Enter & cThuDuoc.Checked == true)
            {
                txtSoTien.Focus();
            }
            else if (e.KeyChar == (char)Keys.Enter & cThuDuoc.Checked == false)
            {
                luu();
            }
        }
        private void luu()
        {
            Doanh_Bo_Thang doanhbothang = dc.Doanh_Bo_Thangs.Single(db => (db.Khach_Hang.KH_MaKH == txtMaKH.Text) & (db.DB_Thang == Convert.ToInt16(lkThang.EditValue)) & (db.DB_Nam == Convert.ToInt16(lkNam.EditValue)));
            if (doanhbothang.DB_Lock == false)
            {
                if (Convert.ToDecimal(txtSoTien.Text) != doanhbothang.DB_PhiPhaiThu | cThuDuoc.Checked == false)
                {
                    doanhbothang.DB_Update = true;

                    if (cThuDuoc.Checked == true)
                    {
                        //Trang_Thai_Hoat_Dong TrangThai = from tt in dc.Trang_Thai_Hoat_Dongs where tt.TTHD_TenTT == "Không thu được" select tt;
                        Trang_Thai_Thu TrangThai = dc.Trang_Thai_Thus.Single(tt => tt.TTT_Ten == "Thu được");
                        doanhbothang.Trang_Thai_Thu = TrangThai;
                        doanhbothang.DB_PhiDaThu = Convert.ToDecimal(txtSoTien.Text);
                    }
                    else
                    {
                        Trang_Thai_Thu TrangThai = dc.Trang_Thai_Thus.Single(tt => tt.TTT_Ten == "Không thu được");
                        doanhbothang.Trang_Thai_Thu = TrangThai;
                        doanhbothang.DB_PhiDaThu = 0;

                    }
                    dc.SubmitChanges();
                    int thang, nam;
                    if (lkThang.EditValue != null)
                    {
                        thang = Convert.ToInt16(lkThang.EditValue);
                    }
                    else
                    {
                        thang = 0;
                    }
                    if (lkNam.EditValue != null)
                    {
                        nam = Convert.ToInt16(lkNam.EditValue);
                    }
                    else
                    {
                        nam = 0;
                    }

                    var doanhbo = from db in dc.Doanh_Bo_Thangs where (db.DB_Thang == thang) & (db.DB_Nam == nam) & (db.DB_Update == true) select new { db.Khach_Hang.KH_MaKH, db.Khach_Hang.KH_Ten, diachi = db.Khach_Hang.KH_SoNha + ", " + db.Khach_Hang.Duong.D_Ten, db.Khach_Hang.Khu_Vuc.Phuong_Xa.PX_Ten, db.DB_PhiPhaiThu, db.Trang_Thai_Thu.TTT_Ten, db.DB_PhiDaThu, db.DB_Update };


                    gcDoanhBo.DataSource = doanhbo;
                    txtMaKH.Text = "";
                    txtTenKH.Text = "";
                    cThuDuoc.Checked = false;
                    txtSoTien.Text = "";
                }
                else
                {
                    XtraMessageBox.Show("Phí đã thu bằng phí phải thu, không cần phải cập nhật ", "Cảnh Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else
            {
                XtraMessageBox.Show("Doanh bộ vào tháng " + lkThang.EditValue.ToString() + ", năm " + lkNam.EditValue.ToString() + " cho khách hàng này đã bị khóa", "Cảnh Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        private void txtSoTien_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Enter)
            {
                luu();
            }
        }

        private void txtSoTien_EditValueChanged_1(object sender, EventArgs e)
        {

        }

        private void cThuDuoc_CheckedChanged(object sender, EventArgs e)
        {
            if (cThuDuoc.Checked == true)
            {
                txtSoTien.Enabled = true;
            }
            else
            {
                txtSoTien.Enabled = false;
            }

        }

        private void lkNam_EditValueChanged(object sender, EventArgs e)
        {
            int thang, nam;
            if (lkThang.EditValue != null)
            {
                thang = Convert.ToInt16(lkThang.EditValue);
            }
            else
            {
                thang = 0;
            }
            if (lkNam.EditValue != null)
            {
                nam = Convert.ToInt16(lkNam.EditValue);
            }
            else
            {
                nam = 0;
            }

            var doanhbo = from db in dc.Doanh_Bo_Thangs where (db.DB_Thang == thang) & (db.DB_Nam == nam) & (db.DB_Update == true) select new { db.Khach_Hang.KH_MaKH, db.Khach_Hang.KH_Ten, diachi = db.Khach_Hang.KH_SoNha + ", " + db.Khach_Hang.Duong.D_Ten, db.Khach_Hang.Khu_Vuc.Phuong_Xa.PX_Ten, db.DB_PhiPhaiThu, db.Trang_Thai_Thu.TTT_Ten, db.DB_PhiDaThu, db.DB_Update };

            gcDoanhBo.DataSource = doanhbo;
        }

        private void barButtonItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {

        }

        private void btKhoaDoanhBo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            result = XtraMessageBox.Show("Bạn có muốn khóa doanh bộ tháng "+lkThang.EditValue.ToString()+" năm "+lkNam.EditValue.ToString()+" không?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
            if (result == DialogResult.Yes)
            {
                var doanhbo = from db in dc.Doanh_Bo_Thangs where (db.DB_Thang == Convert.ToInt16(lkThang.EditValue)) & (db.DB_Nam == Convert.ToInt16(lkNam.EditValue)) select db;
                foreach (Doanh_Bo_Thang db in doanhbo)
                {
                    db.DB_Lock = true;
                }
                dc.SubmitChanges();
            }
        }

        private void btMoDoanhBo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            result = XtraMessageBox.Show("Bạn có muốn mở doanh bộ tháng " + lkThang.EditValue.ToString() + " năm " + lkNam.EditValue.ToString() + " không?", "Xác nhận", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
            if (result == DialogResult.Yes)
            {
                var doanhbo = from db in dc.Doanh_Bo_Thangs where (db.DB_Thang == Convert.ToInt16(lkThang.EditValue)) & (db.DB_Nam == Convert.ToInt16(lkNam.EditValue)) select db;
                foreach (Doanh_Bo_Thang db in doanhbo)
                {
                    db.DB_Lock = false;
                }
                dc.SubmitChanges();
            }
        }
    }
} 